ggplot(penguins, aes(x = bill_length_mm, y = bill_depth_mm)) +geom_point()
R base versus ggplot - complejo
ggplot (data = penguins, aes(x = bill_length_mm, y = bill_depth_mm)) +geom_point(aes(color = body_mass_g)) + scico::scale_color_scico(palette ="bamako", direction =-1) +scale_x_continuous(breaks =3:6*10, limits =c(30, 60)) +scale_y_continuous(breaks =seq(12.5, 22.5, by =2.5),limits =c(12.5, 22.5)) +theme_minimal () +labs( title ='Bill Dimensions of Brush-Tailed Penguins (Pygoscelis)',subtitle ='A scatter plot of bill depth versus bill length.',caption ='data = Gorman, Williams & Fraser (2014) PLoS ONE, graph = Cédric Scherer',x ='Bill Length (mm)',y ='Bill Depth (mm)',color ='Body mass (g)' ) +theme_minimal ()
cols <-scico(100, palette ="bamako", direction =-1)color_values <- cols[as.numeric(cut(penguins$body_mass_g, breaks =100))]plot( penguins$bill_length_mm, penguins$bill_depth_mm,col = color_values, pch =21, bg = color_values, xlim =c(30, 60), ylim =c(12.5, 22.5),xaxt ="n", yaxt ="n",xlab ="Bill Length (mm)",ylab ="Bill Depth (mm)",main ="Bill Dimensions of Brush-Tailed Penguins (Pygoscelis)",sub ="A scatter plot of bill depth versus bill length.")
# Le falta la leyenda aún
Bases de ggplot
ggplot = Grammar of Graphics (gg) Separa cada componente de un gráfico en componentes individuales, creando distintas capas. Así tenemos resultados más flexibles y personalizables.
Data
Aesthetics (x, y)
Geometries (points, lines, boxplots)
Scales (eg. colores)
Facets (subplots)
Statistics (show means, counts, and other statistical summaries of data)
Coordinates
Theme (apariencia general del gráfico)
Layers inside ggplot
Ejemplo de capas
Hertz & McNeill 2024
Aesthetics
x, y
colour: color de los geoms (CONTORNO)
fill: el color de dentro de los geoms (RELLENO)
group: a qué grupo pertenece un geom
shape: la forma de los puntos
linetype: tipo de linea (solid, dashed, etc)
size: escalar el tamaño
alpha: transparencia
RforEcology.com
Geometries
Categórico
geom_bar(): bar charts for categorical x axis
geom_boxplot(): box and whiskers plot for categorical variables
geom_violin(): distribution kernel of data dispersion
Continuo
geom_histogram(): histogram for continuous x axis
geom_point(): scatterplot
geom_line(): lines connecting points by increasing value of x
geom_path(): lines connecting points in sequence of appearance
Scales
Scales se puede modificar el tipo de variable, transformarla, tamaño, color, nombre etc.
scale_colour_brewer() - añadir colores de una paleta
scale_fill_continuous () - añadir colores de relleno continuos
Facets
facet_wrap()
facet_grid()
facet_wrap(~ variable) | Divide el gráfico en varios paneles según una sola variable. Coloca los paneles en una cuadrícula flexible (se “envuelven” automáticamente).
facet_grid(fila ~ columna) | Divide los gráficos según dos variables: una define las filas y otra las columnas.
Themes
Se pueden hacer personalizados también
Empecemos a visualizar
Primero pensar qué queremos visualizar (dibujo?)
El orden donde ponemos los argumentos
Si van dentro de paréntesis o no
dónde va la base de datos a la que hacemos referencia
# Dónde va la base de datos?ggplot (BASE DE DATOS, aes (x, y, fill, color)) +geom_xxx () +theme ()# Si trabajamos con dplyr antesBASE DE DATOS %>%ggplot (aes (x, y, fill, color)) +geom_xxx () +theme ()# Si trabajamos con varias bases de datosggplot () +geom_point (base_de_datos1, aes (x, y, fill, color)) +geom_line (base_de_datos2, aes (x, y, fill, color)) +theme ()
LA CAPA ‘DATA’
Volvemos con los pingüinos. ggplot = base de datos
library(ggplot2)penguins %>%ggplot(aes(x = species, y = bill_length_mm, fill=species)) +geom_bar(stat ="identity") +guides(fill =FALSE) +labs(title ="Longitud del pico en mm",subtitle ="Suma por especie",x ="Especie de pingüino",y ="Longitud del pico" ) +theme_minimal()
Incluímos una variable más
Añadiendo en “fill” el sexo del pingüino.
penguins %>%ggplot(aes(x = species, y = bill_length_mm, fill = sex)) +geom_bar(stat ="identity")
Quitamos NAs y añadimos position_dodge() para visualizarlos uno al lado del otro
penguins %>%filter(!is.na(sex)) %>%ggplot(aes(x = species, y = bill_length_mm, fill = sex)) +geom_bar(stat ="identity", position =position_dodge())
Colores personalizados
penguins %>%filter (!is.na(sex)) %>%ggplot (aes(x = species, y = bill_length_mm, fill = sex)) +geom_bar (stat ="identity", position =position_dodge()) +scale_fill_manual (values =c("#72874EFF", "#FED789FF")) +theme_minimal ()
Boxplot
penguins %>%ggplot (aes(x = island, y = bill_length_mm)) +geom_boxplot ()
penguins %>%ggplot (aes(x = island, y = bill_length_mm, fill=island)) +geom_boxplot ()
penguins %>%ggplot (aes(x = island, y = bill_length_mm, color=island)) +geom_boxplot ()
Cuidado con los boxplots!
Seven distributions of data, shown as raw data points (of strip-plots), as box plots, and as violin plots